{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*The Deutsch-Jozsa Algorithm*_ \n",
    "\n",
    "The [Deutsch-Jozsa algorithm](http://rspa.royalsocietypublishing.org/content/439/1907/553) is one of the earliest examples demonstrating the power of quantum computers. The algorithm deals with guessing the type of a hidden Boolean function given as an oracle. The Boolean function is promised to be either balanced, i.e., whose values are $0$ on half of its inputs, or constant, i.e., whose values are the same on all inputs. \n",
    "\n",
    "Classically, in the best case, two queries to the oracle can determine if the hidden Boolean function is balanced; in the worst case, at least half of the inputs must be queried to determine if the hidden Boolean function is constant for all inputs. On the other hand, the Deutsch-Jozsa algorithm can determine the Boolean function with one quantum query.   \n",
    "\n",
    "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n",
    "\n",
    "***\n",
    "### Contributors\n",
    "Rudy Raymond"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction <a id='introduction'></a>\n",
    "\n",
    "The algorithm in this notebook follows that in [Cleve et al. 1997](https://arxiv.org/pdf/quant-ph/9708016.pdf). We assume that the input to the oracle $f$ is a $n$-bit string. Namely, for each $x\\ in \\{0,1\\}^n$, the value of $f(x)$ is promised to be either constant, i.e., the same for all $x$, or balanced, i.e., exactly half of the $n$-bit string whose $f(x) = 0$. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Algorithm\n",
    "\n",
    "The algorithm is quite simple as follows.\n",
    "1. Prepare two quantum registers initialized to zero. The first is an $n$-qubit reqister for querying the oracle, and the second is a one-qubit register for storing the answer of the oracle\n",
    "$$\n",
    "|0\\ldots 0\\rangle |0\\rangle\n",
    "$$\n",
    "2. Create the superposition of all input queries in the first register by applying the Hadamard gate to each qubit.\n",
    "$$\n",
    "H^{\\otimes^n} |0\\ldots 0\\rangle |0\\rangle = \\frac{1}{\\sqrt{2^n}}\\sum_{i=0}^{2^n-1}|i\\rangle |0\\rangle \n",
    "$$\n",
    "3. Flip the second register and apply the Hadamard gate. This is to store the answer of the oracle in the phase.\n",
    "$$\n",
    "\\frac{1}{\\sqrt{2^n}}\\sum_{i=0}^{2^n-1}|i\\rangle |0\\rangle \\rightarrow \\frac{1}{\\sqrt{2^{n+1}}}\\sum_{i=0}^{2^n-1}|i\\rangle ( |0\\rangle - |1\\rangle )\n",
    "$$\n",
    "4. Query the oracle\n",
    "$$\n",
    "\\frac{1}{\\sqrt{2^{n+1}}}\\sum_{i=0}^{2^n-1}|i\\rangle ( |0\\rangle - |1\\rangle ) \\rightarrow \\frac{1}{\\sqrt{2^{n+1}}}\\sum_{i=0}^{2^n-1}(-1)^{f(i)}|i\\rangle ( |0\\rangle - |1\\rangle ) \n",
    "$$\n",
    "5. Apply the Hadamard gate to the first register\n",
    "\n",
    "6. Measure the first register. If it is non-zero, then conclude that the hidden Boolean function is balanced. Otherwise, conclude that it is constant. \n",
    "\n",
    "The correctness of the conclusion of the last step can be explained as follows. \n",
    "\n",
    "When the hidden Boolean function is constant, the quantum states before and after querying the oracle are the same. The inverse of the Hadamard gate is the Hadamard gate itself. Thus, by Step 5, we essentially reverse Step 2 to obtain the initial quantum state of all-zero at the first register.  \n",
    "\n",
    "When the hidden Boolean function is balanced, the quantum state after querying the oracle is orthogonal to the quantum state before querying the oracle. Thus, by Step 5, when reverting the operation, we must end up with a quantum state that is orthogonal to the initial quantum state of all-zero at the first register. This means we should never obtain the all-zero state. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The Circuit <a id=\"circuit\"></a>\n",
    "\n",
    "We now implement the Deutsch-Jozsa algorithm with Qiskit by first preparing the environment."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T15:39:22.130660Z",
     "start_time": "2018-09-26T15:39:20.490197Z"
    }
   },
   "outputs": [],
   "source": [
    "# useful additional packages \n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# importing Qiskit\n",
    "from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister\n",
    "from qiskit.primitives import StatevectorSampler\n",
    "from qiskit.visualization import plot_histogram\n",
    "from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager\n",
    "\n",
    "\n",
    "from qiskit_ibm_runtime import SamplerV2 as Sampler\n",
    "from qiskit_ibm_runtime import QiskitRuntimeService"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We first set the length of the $n$-bit string. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T15:39:24.251778Z",
     "start_time": "2018-09-26T15:39:24.247587Z"
    }
   },
   "outputs": [],
   "source": [
    "n = 10 # the length of the first register for querying the oracle "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then use Qiskit to program the algorithm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T15:39:24.980983Z",
     "start_time": "2018-09-26T15:39:24.968037Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The oracle returns a constant value  1\n"
     ]
    }
   ],
   "source": [
    "# Choose a type of oracle at random. With probability half it is constant, \n",
    "# and with the same probability it is balanced\n",
    "oracleType, oracleValue = np.random.randint(2), np.random.randint(2)\n",
    "\n",
    "if oracleType == 0:\n",
    "    print(\"The oracle returns a constant value \", oracleValue)\n",
    "else:\n",
    "    print(\"The oracle returns a balanced function\")\n",
    "    a = np.random.randint(1,2**n) # this is a hidden parameter for balanced oracle. \n",
    "\n",
    "# Creating registers\n",
    "# n qubits for querying the oracle and one qubit for storing the answer\n",
    "qr = QuantumRegister(n+1) #all qubits are initialized to zero\n",
    "# for recording the measurement on the first register\n",
    "cr = ClassicalRegister(n, name='res')\n",
    "\n",
    "circuitName = \"DeutschJozsa\"\n",
    "djCircuit = QuantumCircuit(qr, cr)\n",
    "\n",
    "# Create the superposition of all input queries in the first register by applying the Hadamard gate to each qubit.\n",
    "for i in range(n):\n",
    "    djCircuit.h(qr[i])\n",
    "\n",
    "# Flip the second register and apply the Hadamard gate.\n",
    "djCircuit.x(qr[n])\n",
    "djCircuit.h(qr[n])\n",
    "    \n",
    "# Apply barrier to mark the beginning of the oracle\n",
    "djCircuit.barrier()\n",
    "\n",
    "if oracleType == 0:#If the oracleType is \"0\", the oracle returns oracleValue for all input. \n",
    "    if oracleValue == 1:\n",
    "        djCircuit.x(qr[n])\n",
    "    else:\n",
    "        djCircuit.id(qr[n])\n",
    "else: # Otherwise, it returns the inner product of the input with a (non-zero bitstring) \n",
    "    for i in range(n):\n",
    "        if (a & (1 << i)):\n",
    "            djCircuit.cx(qr[i], qr[n])\n",
    "        \n",
    "# Apply barrier to mark the end of the oracle\n",
    "djCircuit.barrier()\n",
    "\n",
    "# Apply Hadamard gates after querying the oracle\n",
    "for i in range(n):\n",
    "    djCircuit.h(qr[i])\n",
    "    \n",
    "# Measurement\n",
    "djCircuit.barrier()\n",
    "for i in range(n):\n",
    "    djCircuit.measure(qr[i], cr[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Experiment with Simulators\n",
    "\n",
    "We can run the above circuit on the simulator. \n",
    "\n",
    "First, we draw the circuit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T15:39:31.705137Z",
     "start_time": "2018-09-26T15:39:26.587871Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 788.86x518.389 with 1 Axes>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#draw the circuit\n",
    "djCircuit.draw(output='mpl',scale=0.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We then run the circuit on the simulator."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T15:39:32.111682Z",
     "start_time": "2018-09-26T15:39:31.709658Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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jhx53nkZGRmSpA4dOkj65e2srKwsHT161DFn3bp18vHxUXh4eL2tFwAAuA6XPYVRU1OjZcuWKS4urlYV7tmzR8uXL9dNN90kPz8/ZWZmatq0aYqOjlbv3r0lSUOHDlV4eLjuuusuLVq0SPn5+XrssccUHx9vPFsEAACaHpeNpPXr1ysvL0/33HNPrXEPDw+tX79eL774okpLSxUUFKTRo0frsccec8yx2WxavXq17r//fkVFRcnb21txcXG17qsEAACaNpeNpKFDh8p0zXlQUJA2btz4u78fHBysxMTE+lgaAABoBFz6miQAAID6QiQBAAAYEEkAAAAGRBIAAIABkQQAAGBAJAEAABgQSQAAAAZEEgAAgAGRBAAAYEAkAQAAGBBJAAAABkQSAACAAZEEAABgQCQBAAAYEEkAAAAGRBIAAIABkQQAAGBAJAEAABgQSQAAAAZEEgAAgAGRBAAAYEAkAQAAGBBJAAAABkQSAACAAZEEAABgQCQBAAAYEEkAAAAGRBIAAIABkQQAAGBQ50hKTU1VXl7eeeccPHhQqampdd0FAACA09Q5kmJiYpSQkHDeOW+99ZZiYmLqugsAAACnqXMk2e32351TU1Mji8VS110AAAA4Tb1ek7R79275+vrW5y4AAADqhdvFTL7nnntqPV65cqX2799/1rzq6mrH9UgjRoz4QwsEAABwhouKpF9fg2SxWJSRkaGMjAzjXIvFov79++uFF174I+sDAABwiouKpH379kn65Xqk0NBQTZ06VX/961/Pmmez2dS6dWt5e3tfmlUCAABcZhcVScHBwY5/L1u2TH369Kk1BgAA0FhcVCT9Wlxc3KVcBwAAQINS50g6Iz09Xdu2bVNRUZGqq6vP2m6xWPT444//0d0AAABcVnWOpMLCQt16663atGnTee+ZRCQBAABXVOdImj59ur7++msNHjxYcXFx6tixo9zc/vCJKQAAgAahzlWzevVqDRgwQMnJydxVGwAANDp1vuP2zz//rOjoaAIJAAA0SnWOpIiICOPdtgEAABqDOkfSnDlz9Omnn2rLli2Xcj0AAAANQp2vScrPz9fIkSN1ww03aNy4cerbt698fHyMc8ePH1/nBQIAADiDxX6+z++fh9VqlcViqfXx/99en2S322WxWIz3T3J1JSUl8vX1VXFx8Tnj8I/o/PDnl/w5AQBwJfuf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eosdQNNisV/IZ+AAAACamCZ7TRIAAMD5EEkAAAAGRBIAAIABkQQAAGBAJAEAABgQSQAAAAZN+j5JAHA+FRUVqqmp0alTp1RdXW38yiIAjReRBAAGycnJWrJkiRITExUQEKCIiAj16NFDgwYN0rXXXitvb2/V1NTIauWEPNBYcTNJAPiNkydPqkePHhowYIAmTJigvXv36quvvtK///1v2Ww2jR49Wo888oizlwmgnhFJAPAbL730kt5++2198803tcYPHDighIQEPfvssxoyZIg++OADeXh4OGmVAOob54kB4DdOnDihVq1aqbi4WJJUXl4uu92u4OBgzZkzR6tWrVJWVpYyMjKcu1AA9YpIAoDfGDNmjHJycvTRRx9Jkpo1ayaLxaKKigpJ0g033KDWrVtr27ZtzlwmgHpGJAHAb4SFhWncuHG69957NXjwYK1atUqS5OnpqZ9//llZWVn64YcfdOONNzp5pQDqE9ckAcA5pKam6plnnlFqaqqsVqv69++v5s2bKysrS4MHD1ZCQoKzlwigHhFJAGBQWFioNm3aSJK+++47paWlaevWrZKkO++8U1FRUfL19XXmEgHUMyIJAP7PoUOH9L//+7/avn27vLy85OvrqyFDhmjkyJFq3bq1s5cH4DIjkgDg//Tr109ubm4KCwuTxWJRUVGR9uzZo5YtW+qOO+7QhAkT1KJFC9ntdlksFmcvF0A9447bACDpvffe0/Hjx5WWlqYOHTpIkg4ePKjt27friy++0OLFi1VRUaEZM2YQSEATwZkkAJD06KOPavfu3Xr//feN259//nktXLhQaWlpuvLKKy/z6gA4A7cAAABJgwcP1urVq/Xmm2+qqqrKMX7m/yPvv/9+hYSEaO3atc5aIoDLjLfbAEDSn/70J913331avHix8vPzdfvtt6tjx46yWq2yWCz6+eeflZubq6uvvtrZSwVwmfB2G4Amr6amRlarVceOHdMzzzyjJUuWyGq1avDgwbr++uu1d+9eZWRkyGaz6auvvnL2cgFcJkQSAEi1PrFWWVmp5cuX67333tPevXt11VVXqW/fvrr77rsVGhrq5JUCuFyIJABN2smTJ5WSkqLs7Gzl5OQoOjpat912m3x8fBxziouLuXEk0AQRSQCatLi4OK1bt04dO3ZU+/btlZ6ersLCQg0bNkwzZ85UdHS0JHFvJKAJ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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sampler = StatevectorSampler()\n",
    "job = sampler.run([djCircuit])\n",
    "results = job.result()\n",
    "plot_histogram(results[0].data.res.get_counts())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Repeating the above experiments, we can see that the result of the measurement is an all-zero bitstring if the oracle returns a constant value, or a non-zero bitstring otherwise.\n",
    "\n",
    "## Experiment with Real Devices\n",
    "\n",
    "We can run the circuit on the real device as below. However, notice that because the real devices are noisy, we cannot obtain the type of oracles with certainty, unlike when running the experiments with simulators. The Deutsch-Jozsa algorithm only shows the superiority of quantum computers against exact classical algorithms; when allowing some error, classically we can determine the type of the hidden Boolean function with a constant number of queries. This is asymptotically the same as the case with quantum computers. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T15:39:38.192969Z",
     "start_time": "2018-09-26T15:39:37.138264Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ibm_brisbane\n"
     ]
    }
   ],
   "source": [
    "service = QiskitRuntimeService(channel=\"ibm_quantum\")\n",
    "backend = service.least_busy(operational=True, simulator=False)\n",
    "print(backend.name)\n",
    "target = backend.target\n",
    "pm = generate_preset_pass_manager(target=target, optimization_level=3)\n",
    "\n",
    "isa_circuit = pm.run(djCircuit)\n",
    "#isa_circuit.draw(output='mpl',scale=0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "sampler = Sampler(mode=backend)\n",
    "\n",
    "job = sampler.run([isa_circuit]).result()\n",
    "id = job.job_id()\n",
    "print(id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit_ibm_runtime import QiskitRuntimeService\n",
    "\n",
    "service = QiskitRuntimeService()\n",
    "job = service.job(id)\n",
    "job_result = job.result()\n",
    "counts = job_result[0].data.res.get_counts()\n",
    "#plot_histogram(counts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-26T16:10:01.485559Z",
     "start_time": "2018-09-26T16:10:00.962392Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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0KGDLqZEREREekjvrm4rL9LS0mBtbf1EZ8cTERGRfnia12+9OieJiIiISF+wJBEREREpYEkiIiIiUlDuTtx+UVSb+myvtLs2J/CZfj4iIqLnHY8kERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQKWJKIiIiIFLAkERERESlgSSIiIiJSwJJEREREpIAliYiIiEgBSxIRERGRApYkIiIiIgUsSUREREQK9K4kLV26FA0aNICVlRWsrKzg6+uLXbt2abZnZ2cjKCgIdnZ2qFixInr16oWEhIRinyM2NhaBgYEwNzeHg4MDJk+ejPz8/GL7hISEoHHjxjA1NYWnpydWrVqljekRERFROaF3JcnFxQVz5sxBeHg4Tp06hXbt2qF79+44d+4cAGDChAn4888/sXHjRhw8eBBxcXHo2bOn5t8XFBQgMDAQubm5OHbsGFavXo1Vq1ZhxowZmn1iYmIQGBgIPz8/REREYPz48Rg5ciT27Nmj9fkSERGRflKJiOg6xL+pVKkS5s+fj969e8Pe3h5r165F7969AQAXL15EnTp1EBoaipYtW2LXrl3o0qUL4uLi4OjoCABYtmwZpkyZgsTERJiYmGDKlCnYsWMHzp49q3mM119/HSkpKdi9e/cT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JYmIiIhIAUsSERERkQKWJCIiIiIFLElERERECliSiIiIiBSwJBEREREpYEkiIiIiUsCSRERERKSAJYmIiIhIAUsSERERkQKWJCIiIiIFLElERERECliSiIiIiBSwJBEREREpYEkiIiIiUsCSRERERKSAJYmIiIhIAUsSERERkQKWJCIiIiIFLElERERECliSiIiIiBSwJBEREREpYEkiIiIiUsCSRERERKSAJYmIiIhIAUsSERERkQKWJCIiIiIFLElERERECliSiIiIiBSwJBEREREpYEkiIiIiUsCSRERERKSAJYmIiIhIAUsSERERkQKWJCIiIiIFLElERERECliSiIiIiBSwJBEREREpYEkiIiIiUsCSRERERKSAJYmIiIhIAUsSERERkQKWJCIiIiIFLElERERECliSiIiIiBSwJBEREREpYEkiIiIiUsCSRERERKSAJYmIiIhIAUsSERERkQKWJCIiIiIFLElERERECliSiIiIiBSwJBEREREp0LuSdOjQIXTt2hXOzs5QqVTYunVrse0ighkzZqBKlSowMzODv78/oqOji+2TnJyMgQMHwsrKCjY2NhgxYgTS09OL7XPmzBm8/PLLqFChAlxdXTFv3ryynhoRERGVI3pXkjIyMtCwYUMsWbJEcfu8efPwzTffYNmyZThx4gQsLCzQoUMHZGdna/YZOHAgzp07h3379mH79u04dOgQ3nrrLc32tLQ0BAQEwN3dHeHh4Zg/fz4+/vhj/PDDD2U+PyIiIiofVCIiug7xKCqVClu2bEGPHj0AFB5FcnZ2xqRJk/Dee+8BAFJTU+Ho6IhVq1bh9ddfx4ULF1C3bl2EhYWhadOmAIDdu3ejc+fOuHnzJpydnbF06VJ8+OGHiI+Ph4mJCQBg6tSp2Lp1Ky5evKiYJScnBzk5OZqP09LS4OrqiqSkJFhZWQEADAwMYGhoiIKCAqjVas2+ReP5+fl48MttaGgIAwMDxXGPD3Y9g6/g/0R/GgCg8GtqZGQEtVqNgoICzfai8UdlfxZzMjAwQF5eXrFcRkZGAID8/PwnGjc2Nn5kds6Jc+KcOCfOiXP6tzklJyfDzs4OqampmtfvRzF67FY9ExMTg/j4ePj7+2vGrK2t0aJFC4SGhuL1119HaGgobGxsNAUJAPz9/WFgYIATJ07gtddeQ2hoKNq0aaMpSADQoUMHzJ07F/fu3YOtrW2Jx/7iiy8wa9asEuN79+6Fubk5AMDNzQ0+Pj44c+YMYmNjNft4eXmhdu3aOHnyJBITEzXjjRo1gru7Ow4dOoT79+9rxn19fUv5FXq0nTt3AgAsLS3Rrl073LhxAxEREZrt9vb2aNWqFaKjoxEVFaUZf5ZzcnBwwN69e4v9sPj5+cHMzEyTr0jnzp2RlZWFAwcOaMaMjIwQGBiIpKQkhIaGasY5J86Jc+KcOCfO6UnndPToUTypcnUk6dixY2jdujXi4uJQpUoVzX59+/aFSqXCb7/9hs8//xyrV68u9oUEAAcHB8yaNQujR49GQEAAqlevju+//16z/fz586hXrx7Onz+POnXqlMjCI0n83wfnxDlxTpwT51T+5/TcHknSJVNTU5iampYYNzY2hrGxcbExQ0NDGBoalti36MnypOPP0sMZDQwMYGBQ8pS0R2V/VnN6OEdpxh+VnXPinB43zjlxTpwT5/S4cSV6d+L24zg5OQEAEhISio0nJCRotjk5OeHOnTvFtufn5yM5ObnYPkqf48HHICIiohdbuSpJ1atXh5OTE/bv368ZS0tLw4kTJzTn8fj6+iIlJQXh4eGafYKDg6FWq9GiRQvNPocOHSp2uHDfvn3w8vJSPB+JiIiIXjx6V5LS09MRERGhOWkrJiYGERERiI2NhUqlwvjx4/HZZ5/hjz/+QGRkJAYPHgxnZ2fNeUt16tRBx44d8eabb+LkyZM4evQoxowZg9dffx3Ozs4AgAEDBsDExAQjRozAuXPn8Ntvv+Hrr7/GxIkTdTRrIiIi0jd6d07SqVOn4Ofnp/m4qLgMGTIEq1atwvvvv4+MjAy89dZbSElJwUsvvYTdu3ejQoUKmn+zZs0ajBkzBu3bt4eBgQF69eqFb775RrPd2toae/fuRVBQEJo0aYLKlStjxowZxdZSIiIiohebXl/dps/S0tJgbW39RGfHl0a1qTue6ee7NifwmX4+IiKi8uhpXr/17u02IiIiIn3AkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIiIiIlLAkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIiIiIlLAkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIiIiIlLAkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIiIiIlLAkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIiIiIlLAkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIiIiIlLAkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIiIiIlLAkkRERESkgCWJiIiISAFLEhEREZECliQiIiIiBSxJRERERApYkoiIiIgUsCQRERERKWBJIqJivvjiCzRr1gyWlpZwcHBAjx49EBUVVWK/0NBQtGvXDhYWFrCyskKbNm2QlZVVptmWLl2KBg0awMrKClZWVvD19cWuXbs023/44Qe88sorsLKygkqlQkpKSpnmoeffk/w8xMfHY9CgQXBycoKFhQUaN26MzZs36ygxPUssSfSfHDp0CF27doWzszNUKhW2bt36yH3ffvttqFQqLFq0qMxzPckvtuzsbAQFBcHOzg4VK1ZEr169kJCQUObZgH//uiUkJGDo0KFwdnaGubk5OnbsiOjoaK1kO3jwIIKCgnD8+HHs27cPeXl5CAgIQEZGhmaf0NBQdOzYEQEBATh58iTCwsIwZswYGBiU7a8UFxcXzJkzB+Hh4Th16hTatWuH7t2749y5cwCAzMxMdOzYER988EGZ5lDyJM85XZa4f3vOqVQqxT/z589/obM9yc/D4MGDERUVhT/++AORkZHo2bMn+vbti9OnT5d5Pn3+2j0PWJLoP8nIyEDDhg2xZMmSx+63ZcsWHD9+HM7OzlrJ9SS/2CZMmIA///wTGzduxMGDBxEXF4eePXtqJd/jvm4igh49euDq1avYtm0bTp8+DXd3d/j7+xfLX1Z2796NoUOHol69emjYsCFWrVqF2NhYhIeHa/aZMGEC3n33XUydOhX16tWDl5cX+vbtC1NT0zLN1rVrV3Tu3Bk1a9ZErVq1MHv2bFSsWBHHjx8HAIwfPx5Tp05Fy5YtyzSHkid5zumyxP3bz+rt27eL/VmxYgVUKhV69er1Qmd7kp+H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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshold = int(0.01 * 1024) # the threshold of plotting significant measurements, 1% of the default number of shots, 1024\n",
    "filteredAnswer = {k: v for k,v in counts.items() if v >= threshold} # filter the answer for better view of plots\n",
    "\n",
    "removedCounts = np.sum([ v for k,v in counts.items() if v < threshold ]) # number of counts removed \n",
    "filteredAnswer['other_bitstrings'] = removedCounts  # the removed counts are assigned to a new index\n",
    "\n",
    "plot_histogram(filteredAnswer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "qiskit==1.1.0\n",
      "qiskit-aer==0.14.2\n",
      "qiskit-algorithms==0.3.0\n",
      "qiskit-ibm-runtime==0.25.0\n",
      "qiskit-machine-learning==0.7.2\n",
      "qiskit-nature==0.7.2\n",
      "qiskit-nature-pyscf==0.4.0\n",
      "qiskit-qasm3-import==0.5.0\n",
      "qiskit-transpiler-service==0.4.5\n"
     ]
    }
   ],
   "source": [
    "! pip freeze | grep qiskit"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
